<!--
  ~
  ~  Copyright (c) 2018-2025, Pactera JinXin Software All rights reserved.
  ~
  -->

<template>
    <div class="execution">
        <basic-container>
            <avue-crud
                ref="crud"
                :page="page"
                :data="tableData"
                :table-loading="tableLoading"
                :option="tableOption"
                :permission="permissionList"
                @on-load="getList"
                @refresh-change="refreshChange"
                @row-del="handleDel"
            />
        </basic-container>
    </div>
</template>

<script>
import { delObj, fetchList } from "@/api/admin/token";
import { tableOption } from "@/const/crud/admin/token";
import { mapGetters } from "vuex";

export default {
    name: "Token",
    data() {
        return {
            tableData: [],
            page: {
                total: 0, // 总页数
                currentPage: 1, // 当前页数
                pageSize: 20 // 每页显示多少条
            },
            tableLoading: false,
            tableOption: tableOption
        };
    },
    created() {},
    mounted: function () {},
    computed: {
        ...mapGetters(["permissions"]),
        permissionList() {
            return {
                delBtn: this.vaildData(this.permissions.sys_token_del, false)
            };
        }
    },
    methods: {
        getList(page, params) {
            this.tableLoading = true;
            fetchList(
                Object.assign(
                    {
                        current: page.currentPage,
                        size: page.pageSize
                    },
                    params
                )
            )
                .then((response) => {
                    this.tableData = response.data.data.records;
                    this.page.total = response.data.data.total;
                    this.tableLoading = false;
                })
                .catch(() => {
                    this.tableLoading = false;
                });
        },
        handleDel: function (row, index) {
            let _this = this;
            this.$confirm("是否强制" + row.username + "下线?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            })
                .then(function () {
                    return delObj(row.access_token);
                })
                .then(() => {
                    _this.tableData.splice(index, 1);
                    _this.$message({
                        showClose: true,
                        message: "强制下线成功",
                        type: "success"
                    });
                })
                .catch(function () {});
        },
        /**
         * 刷新回调
         */
        refreshChange() {
            this.getList(this.page);
        }
    }
};
</script>

<style lang="scss" scoped>
</style>

